home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 75489 / 75489.xpi / chrome / keeptube / content / keeptube.js < prev    next >
Text File  |  2010-02-09  |  11KB  |  355 lines

  1. var KeepTubeDownloader = {
  2.  
  3.     keep_tube_12x12 : 'data:image/gif;base64,AAABAAEADAwAAAEAIACYAgAAFgAAACgAAAAMAAAAGAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NqVwNTKz/y8tvf8uK8D/KyfB/ywow/8rKcP/KifC/y8rwf8vLL7/NzS8/0xKxnAzM6n/xsb0/3R05P6srPL/rKzy/1FQ5f/GxvT/rKzy/0lI4f/GxvT/xsb0/2Zl2f8yMsD/1dX4/3h45e3GxvT/xsb0/3V15//V1fj/1dX4/4GB7//V1fj/rKzy/1lZ4f87O9P/xsb0/39/7O3Ozvj/xsb0/3l57P/Nzff/rKzy/4OD8P/f3/j/xsb0/3Ny7P89PdP/1dX4/3x88e1nbPD/Z2zw/2dm7//V1fj/Z2zw/1pa7P9nbPD/Z2zw/2ds8P+srPL/2tr7/tra+/g+Pu3/Pz/t/0ZG7f/AwPb/QkLt/zw+7v9MUvD/Wmfy/36K9P95eb7PUmfO/1xc7v9XV+7/U1Pv/1NT7/9VVu7/WFvw/2Bo8v95h/T/maf1/8fN9c8DkxTuAJMRQQ6VJfYKkyH/D5Qo/kyWhL0KkyH/D5Qo/kKbb8YMlR/8iLqin8/Q4iAAlBLkAJQS9ACTEZwAlBLsJ6Q2kIvOkzMAkxHnJ6Q2i4vOkzMAkxHbEZoiVimkOAcAkxH9AJMRwgCTESMAlBL6BJUW4zOoQXcAkxH1BpYX3jOoQXQAkxHvAJMR8w6ZHqQAlBL2AJQSywCTEWgAlBLvGZ4ppXvHhD4AkxHtHJ8snH3IhjsAkxH0AJMRZwCTEcwAlBL4AJMRQQCTEaIAlBL3CpgbyRmeKXkAkxH3CpgbzBmeKnsAkxHyAJMR2ACTEX4AAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEE=',
  4.  
  5.     supported_domains : ['youtube.com', 'video.google.', 'dailymotion.', 'metacafe.','veoh.', 'vids.myspace.com', 
  6.                  'megavideo.com', 'megaporn.com', 'vimeo.com', 'facebook.com', 'spike.com', 'current.com', 
  7.                  'break.com', 'ireport.com/docs', ,'irannegah.com', 'redtube.com/', 'youporn.com', 'youporngay.com', 
  8.                  'pornhub.com', 'spankwire.com', 'pornotube.com', 'youjizz.com', 'jizzhut.com', 'xvideos.com'],
  9.     supported_urls      : [],
  10.     
  11.     Load : function() 
  12.     {
  13.         window.document.addEventListener("load", 
  14.             KeepTubeDownloader.SetDownloadIcons, 
  15.         true);
  16.         
  17.         window.addEventListener("load", 
  18.             function() {
  19.                 window.document.addEventListener("DOMContentLoaded", KeepTubeDownloader.ContentLoaded, true)
  20.             },
  21.         false);
  22.     },
  23.  
  24.     ContentLoaded : function(event) 
  25.     {
  26.         var current_document = event.originalTarget;
  27.         if (KeepTubeDownloader.IsYoutubePage(current_document))
  28.         {
  29.             KeepTubeDownloader.SetYoutubePage(current_document);
  30.         }
  31.         KeepTubeDownloader.CheckEmbededYoutube(current_document);
  32.     },
  33.  
  34.     IsYoutubePage : function(current_document) 
  35.     {
  36.         if (current_document.location.href.match(/http:\/\/www(|[0-9])\.(|l\.)youtube\..*\/.*/i)) 
  37.         {
  38.             return true;
  39.         } 
  40.         else 
  41.         {
  42.             return false;
  43.         }
  44.     },
  45.  
  46.  
  47.     InitializeYoutubePage : function(current_document) 
  48.     {
  49.         var video_list = current_document.getElementsByClassName("video-cell");
  50.         if (video_list) {
  51.             for (var i=0;i<video_list.length;i++) 
  52.             {
  53.                 var div_tag = video_list[i].getElementsByClassName("video-main-content")[0];
  54.                 var video_id = div_tag.id.substring(String("video-main-content-").length)
  55.  
  56.                 var hyperlink = current_document.createElement("div");
  57.                 hyperlink.innerHTML          = "<b>[ <a href='http://keep-tube.com/?url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D"+video_id+"' title='Download with Keep Tube!'><img src='"+ KeepTubeDownloader.keep_tube_12x12 +"' border=0> Download</a> ]</b> ";
  58.                 hyperlink.style.cssFloat      = "left";
  59.                 hyperlink.style.marginLight       = "1px";
  60.                 hyperlink.style.fontSize      = "12px";
  61.                 div_tag.appendChild(hyperlink);
  62.             }
  63.         }
  64.     },
  65.  
  66.     CheckEmbededYoutube : function(current_document) 
  67.     {    
  68.         var embed = current_document.getElementsByTagName("embed");
  69.         for (var i=0;i<embed.length;i++) 
  70.         {
  71.             KeepTubeDownloader.AddEmbededDownloadLinks(current_document, embed[i], false);
  72.         }
  73.  
  74.         var objects = current_document.getElementsByTagName("object");
  75.         for (var i=0;i<objects.length;i++) 
  76.         {
  77.             KeepTubeDownloader.AddEmbededDownloadLinks(current_document, objects[i], true);
  78.         }
  79.     },
  80.     
  81.     AddEmbededDownloadLinks : function(current_document, current_object, is_object)
  82.     {
  83.         if (is_object) 
  84.         {
  85.             for (var j=0;j<current_object.childNodes.length;j++) 
  86.             {
  87.                 if (current_object.childNodes[j].getAttribute) 
  88.                 {
  89.                     if (current_object.childNodes[j].getAttribute("name")) 
  90.                     {
  91.                         if ((current_object.childNodes[j].getAttribute("name").toLowerCase()=="movie") || (current_object.childNodes[j].getAttribute("name").toLowerCase()=="src")) 
  92.                         {
  93.                             var object_source = current_object.childNodes[j].getAttribute("value");
  94.                         }
  95.                     }
  96.                 }
  97.             }
  98.             var container = current_object;
  99.             if (current_object.checkd) return;
  100.         } else {
  101.             if (current_object.parentNode instanceof HTMLObjectElement) {
  102.                 for (var j=0;j<current_object.parentNode.childNodes.length;j++) 
  103.                 {
  104.                     if (current_object.parentNode.childNodes[j].getAttribute) 
  105.                     {
  106.                         if (current_object.parentNode.childNodes[j].getAttribute("name")) 
  107.                         {
  108.                             if ((current_object.parentNode.childNodes[j].getAttribute("name").toLowerCase()=="movie") || (current_object.parentNode.childNodes[j].getAttribute("name").toLowerCase()=="src")) 
  109.                             {
  110.                                 var object_source = current_object.parentNode.childNodes[j].getAttribute("value");
  111.                             }
  112.                         }
  113.                     }
  114.                 }
  115.                 var container = current_object.parentNode;
  116.                 current_object.parentNode.checkd = true;
  117.  
  118.             } else 
  119.             {
  120.                 var object_source = current_object.getAttribute("src");
  121.                 var container = current_object;
  122.                 if (current_object.checkd) return;
  123.             }
  124.         }
  125.         current_object.checkd = true;
  126.  
  127.         if (object_source.indexOf("www.youtube.com/v")!=-1) 
  128.         {
  129.             var div_tag = current_document.createElement("div");
  130.             div_tag.style.marginTop = "3px";
  131.             container.parentNode.appendChild(div_tag);
  132.  
  133.             var posA = object_source.indexOf(".com/v/") + 7;
  134.             var posB = object_source.indexOf("&", posA);
  135.             if (posB!=-1) 
  136.             {
  137.                 var video_id = object_source.substring(posA, posB);
  138.             } else {
  139.                 var posB = object_source.indexOf("%26", posA);
  140.                 if (posB!=-1) 
  141.                 {
  142.                     var video_id = object_source.substring(posA, posB);
  143.                 } else 
  144.                 {
  145.                     var video_id = object_source.substring(posA);
  146.                 }
  147.             }
  148.             var hyperlink = current_document.createElement("div");
  149.             hyperlink.innerHTML        = "<b>[ <a href='http://keep-tube.com/?url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D"+video_id+"' title='Download with Keep Tube!'><img src='"+ KeepTubeDownloader.keep_tube_12x12 +"' border=0> Download</a> ]</b> ";
  150.             hyperlink.style.marginLight     = "1px";
  151.             hyperlink.style.fontSize    = "12px";
  152.             div_tag.appendChild(hyperlink);
  153.         }
  154.     },    
  155.  
  156.     SetYoutubePage : function(current_document) 
  157.     {
  158.         KeepTubeDownloader.InitializeYoutubePage(current_document);
  159.         current_document.video_id = KeepTubeDownloader.GetYoutubeQuery(current_document, "v");
  160.         if (current_document.video_id!=null) 
  161.         {
  162.             current_document.videoTitle   = current_document.title.replace(/youtube - /gi, "")
  163.             var download_hyperlinks = current_document.createElement("div");
  164.             var youtube_div    = current_document.getElementById("watch-channel-vids-div");;
  165.             youtube_div.appendChild(download_hyperlinks);
  166.  
  167.             download_hyperlinks.style.marginTop     = "5px";
  168.             download_hyperlinks.style.marginBottom     = "25px";
  169.             download_hyperlinks.style.marginLeft     = "55px";
  170.             var div_tag = current_document.createElement("div");
  171.  
  172.             var video_id = current_document.video_id;
  173.  
  174.             div_tag.innerHTML          = "<b>[ <a href='http://keep-tube.com/?url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D"+video_id+"' title='Download with Keep Tube!'><img src='"+ KeepTubeDownloader.keep_tube_12x12 +"' border=0></img> Download</a> ]</b>"
  175.             div_tag.style.cssFloat      = "left";
  176.             div_tag.style.fontSize      = "12px";
  177.             download_hyperlinks.appendChild(div_tag);
  178.         }
  179.     },
  180.  
  181.  
  182.     GetYoutubeQuery : function(current_document, param)
  183.     {
  184.  
  185.         var query_word = KeepTubeDownloader.GetYoutubeParams(current_document.location.search.substring(1), param);    
  186.  
  187.         if ((query_word=="") || (query_word==null)) 
  188.         {
  189.             query_word = KeepTubeDownloader.GetYoutubeParams(current_document.location.hash, param);    
  190.         }    
  191.         return query_word;
  192.     },
  193.  
  194.  
  195.     GetYoutubeParams : function(query_string, param) 
  196.     {
  197.         var list = query_string.split("&");
  198.         for (i=0;i<list.length;i++) 
  199.         {
  200.             var p = list[i].split("=");
  201.             if (p[0] == param) 
  202.             {
  203.                 return p[1];
  204.             }
  205.         }    
  206.     },
  207.  
  208.     IsSupported : function ()
  209.     {
  210.         try
  211.         {
  212.             if(window.content.document.location=='about:blank')
  213.             {
  214.                 return true;
  215.             }
  216.  
  217.             var addr = window.content.document.location.href;
  218.             var host = window.content.document.location.host;
  219.             
  220.             //alert("address: " + addr + "host: " + host + "\n");
  221.             
  222.             for(var i = 0; i < KeepTubeDownloader.supported_domains.length; i++)
  223.             {
  224.                 var url = KeepTubeDownloader.supported_domains[i];
  225.  
  226.                 if (addr.indexOf(url) >= 0)
  227.                 {
  228.                     return true;
  229.                 }
  230.             }
  231.             return false;
  232.         }
  233.         catch (e)
  234.         {
  235.             //alert("address_has\n" + e);
  236.             return false;
  237.         }
  238.     },
  239.  
  240.     SetDownloadIcons : function ()
  241.     {
  242.         try
  243.         {
  244.             netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  245.  
  246.             try
  247.             {
  248.                 var addr = window.content.document.location.host;
  249.             }
  250.             catch(e)
  251.             {
  252.                 return;
  253.             }
  254.  
  255.  
  256.             var keeptube_icon=document.getElementById('keeptube-tool-bar');
  257.  
  258.             if(KeepTubeDownloader.IsSupported())
  259.             {
  260.                 try
  261.                 {
  262.                     keeptube_icon.setAttribute("enabled", "1");
  263.                     keeptube_icon.setAttribute("tooltiptext", "Download with Keep Tube!");
  264.                 }
  265.                 catch(e)
  266.                 {
  267.                 }
  268.                 document.getElementById('keeptube-status-bar').setAttribute("enabled", "1");
  269.                 document.getElementById('keeptube-tooltip-text').setAttribute("value", "Download with Keep Tube!");
  270.             }
  271.             else
  272.             {
  273.                 try
  274.                 {
  275.                     keeptube_icon.removeAttribute("enabled");
  276.                     keeptube_icon.setAttribute("tooltiptext", "Not Supported");
  277.                 }
  278.                 catch(e)
  279.                 {
  280.                 }
  281.                 document.getElementById('keeptube-status-bar').removeAttribute("enabled");
  282.                 document.getElementById('keeptube-tooltip-text').setAttribute("value", "Not Supported");
  283.             }
  284.             
  285.         }
  286.         catch (e)
  287.         {
  288.             //alert("SetDownloadIcons\n" + e);
  289.         }
  290.     },
  291.  
  292.     DownloadFromKeepTube : function ()
  293.     {
  294.         try
  295.         {
  296.             if(window.content.document.location=='about:blank'){
  297.                 window.content.document.location.href='http://keep-tube.com/';
  298.                 return true;
  299.             }
  300.             
  301.  
  302.             var keeptube_icon = document.getElementById('keeptube-tool-bar');
  303.  
  304.             if (keeptube_icon.getAttribute("enabled")=='1')
  305.             {
  306.  
  307.                 // getting the browser object
  308.                 var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
  309.                 var mainWindow = wm.getMostRecentWindow("navigator:browser");
  310.                 var main_browser = mainWindow.getBrowser();
  311.  
  312.                 // adding new tab
  313.                 var tab = main_browser.addTab('http://keep-tube.com/?url='+encodeURIComponent(content.document.location));
  314.  
  315.                 // making the tab active
  316.                 main_browser.selectedTab = tab;
  317.             }
  318.  
  319.         }
  320.         catch(e)
  321.         {
  322.             //alert("DownloadFromKeepTube\n" + e);
  323.         }
  324.     },
  325.  
  326.  
  327.     PopupMenu : function(request)
  328.     {
  329.         var target_page='';
  330.         
  331.         if(request=='home')
  332.         {
  333.             target_page='http://keep-tube.com';
  334.         }
  335.         if(request=='supported') 
  336.         {
  337.             target_page='http://keep-tube.com/supported-websites.php';
  338.         }
  339.         if(request=='contact') 
  340.         {
  341.             target_page='http://keep-tube.com/contact.php';
  342.         }
  343.         if(request=='help') 
  344.         {
  345.             target_page='http://keep-tube.com/faq.php';
  346.         }
  347.             
  348.         window.content.document.location.href = target_page;
  349.     },
  350.  
  351. } // KeepTubeDownloader
  352.  
  353. KeepTubeDownloader.Load();
  354.  
  355.